home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / x86 / include / asm / es7000 / wakecpu.h < prev   
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.3 KB  |  59 lines

  1. #ifndef __ASM_ES7000_WAKECPU_H
  2. #define __ASM_ES7000_WAKECPU_H
  3.  
  4. /*
  5.  * This file copes with machines that wakeup secondary CPUs by the
  6.  * INIT, INIT, STARTUP sequence.
  7.  */
  8.  
  9. #ifdef CONFIG_ES7000_CLUSTERED_APIC
  10. #define WAKE_SECONDARY_VIA_MIP
  11. #else
  12. #define WAKE_SECONDARY_VIA_INIT
  13. #endif
  14.  
  15. #ifdef WAKE_SECONDARY_VIA_MIP
  16. extern int es7000_start_cpu(int cpu, unsigned long eip);
  17. static inline int
  18. wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
  19. {
  20.     int boot_error = 0;
  21.     boot_error = es7000_start_cpu(phys_apicid, start_eip);
  22.     return boot_error;
  23. }
  24. #endif
  25.  
  26. #define TRAMPOLINE_LOW phys_to_virt(0x467)
  27. #define TRAMPOLINE_HIGH phys_to_virt(0x469)
  28.  
  29. #define boot_cpu_apicid boot_cpu_physical_apicid
  30.  
  31. static inline void wait_for_init_deassert(atomic_t *deassert)
  32. {
  33. #ifdef WAKE_SECONDARY_VIA_INIT
  34.     while (!atomic_read(deassert))
  35.         cpu_relax();
  36. #endif
  37.     return;
  38. }
  39.  
  40. /* Nothing to do for most platforms, since cleared by the INIT cycle */
  41. static inline void smp_callin_clear_local_apic(void)
  42. {
  43. }
  44.  
  45. static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
  46. {
  47. }
  48.  
  49. static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
  50. {
  51. }
  52.  
  53. #define inquire_remote_apic(apicid) do {        \
  54.         if (apic_verbosity >= APIC_DEBUG)    \
  55.             __inquire_remote_apic(apicid);    \
  56.     } while (0)
  57.  
  58. #endif /* __ASM_MACH_WAKECPU_H */
  59.